package main

import "fmt"

func main() {
	a := 20
	str := "hello"
	// 匿名函数，没有函数名字
	f1 := func() {
		fmt.Println("a = ", a)
		fmt.Println("str = ", str)
	}
	f1()

	type FuncType func()

	var test FuncType = f1
	test()

	//定义匿名函数同时调用
	func() {
		fmt.Println("定义匿名函数，同时调用")
	}()
	// 带参数的匿名函数
	fmt.Println("带参数的匿名函数并执行a+b")
	func(a, b int) int {
		return a + b
	}(10, 20)

	// 带参数的匿名函数并执行
	func(a, b int) {
		fmt.Printf("带参数的匿名函数并执行:a+b=%d \n", a+b)
	}(50, 50)
	// 带参 且有返回值的匿名函数
	x, y := func(a, b int) (max int, min int) {
		if a >= b {
			return a, b
		}
		return b, a
	}(2, 3)

	fmt.Printf("max is:%d,min is:%d\n", x, y)
}
